<!DOCTYPE html>
<html lang="en">





<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/img/apple-touch-icon.png">
  <link rel="icon" type="image/png" href="https://img.fungnotl.cn/basket.png">
  <meta name="viewport"
        content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <meta name="description" content="">
  <meta name="author" content="John Doe">
  <meta name="keywords" content="">
  <title>什么是区块链？ ~ fungnotl的博客</title>

  <link rel="stylesheet" href="/lib/font-awesome/css/all.min.css"  >
<link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css"  >
<link rel="stylesheet" href="/lib/mdbootstrap/css/mdb.min.css"  >
<link rel="stylesheet" href="/lib/github-markdown/github-markdown.min.css"  >
<link rel="stylesheet" href="//at.alicdn.com/t/font_1067060_qzomjdt8bmp.css">


  <link rel="stylesheet" href="/lib/prettify/tomorrow-night-eighties.min.css"  >

<link rel="stylesheet" href="/css/main.css"  >


  <link rel="stylesheet" href="/lib/fancybox/jquery.fancybox.min.css"  >


</head>


<body>
  <header style="height: 70vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand"
       href="/">&nbsp;<strong>fungnotl的博客</strong>&nbsp;</a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          <li class="nav-item">
            <a class="nav-link" href="/">主页</a>
          </li>
        
          
          
          <li class="nav-item">
            <a class="nav-link" href="/archives/">归档</a>
          </li>
        
          
          
          <li class="nav-item">
            <a class="nav-link" href="/tags/">标签</a>
          </li>
        
          
          
          <li class="nav-item">
            <a class="nav-link" href="/about/">我</a>
          </li>
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" data-toggle="modal" data-target="#modalSearch">&nbsp;&nbsp;<i
                class="iconfont icon-search"></i>&nbsp;&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>


</nav>

    <div class="view intro-2" id="background"
         style="background: url('https://fungnotl-img.oss-cn-hangzhou.aliyuncs.com/index.jpg')no-repeat center center;
           background-size: cover;
           background-attachment: fixed;">
      <div class="full-bg-img">
        <div class="mask rgba-black-light flex-center">
          <div class="container text-center white-text fadeInUp">
            <span class="h2" id="subtitle">
              
            </span>

            
              <br>
              
                <p class="mt-3">
                  <i class="fas fa-calendar-alt" aria-hidden="true"></i>&nbsp;
                  Saturday, August 10th 2019, 10:07 am
                </p>
              

              <p>
                
                  
                  &nbsp;<i class="far fa-chart-bar"></i>
                  <span class="post-count">
                    4k 字
                  </span>&nbsp;
                

                
                  
                  &nbsp;<i class="far fa-clock"></i>
                  <span class="post-count">
                      13 分钟
                  </span>&nbsp;
                

                
                  <!-- 不蒜子统计文章PV -->
                  
                  &nbsp;<i class="far fa-eye" aria-hidden="true"></i>&nbsp;
                  <span id="busuanzi_container_page_pv">
                    <span id="busuanzi_value_page_pv"></span> 次
                  </span>&nbsp;
                
              </p>
            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid">
  <div class="row">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-md">
      <div class="py-5 z-depth-3" id="board">
        <div class="post-content mx-auto" id="post">
          <div class="markdown-body">
            <h2 id="什么是区块链？"><a href="#什么是区块链？" class="headerlink" title="什么是区块链？"></a>什么是区块链？</h2><blockquote>
<p>区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。简单来讲，<br>在区块链系统中， 每过一段时间， 各参与主体产生的交易数据会被打包成一个数据区块， 数据区块按照时间顺序依次排列， 形成数据区块的链条，各参与主体拥有同样的数据链条， 且无法单方面篡改，任何信息的修改只有经过约定比例的主体同意方可进行，并且只能添加新的信息，无法删除或修改旧的信息，从而实现多主体间的信息共享和一致决策，确保各主体身份和主体间交易信息的不可篡改、 公开透明。</p>
</blockquote>
<blockquote>
<p>区块链发展到今天，已经涌现出许多形形色色的区块链项目， 这里梳理了这些区块链项目在技术上的共性： 区块、 账户、 智能合约、 共识， 这 4个主要部分构成了目前的区块链系统的通用模型 。 通过链式结构记录状态的变更历史，每一次变更的状态“快照”都以“区块” 的形式记录；通过非对称密钥对表示参与者身份，以某种形式的状态数据库记录当前的信息， 这部分被称为“账户” ；（注： 以太坊、 Fabric 是账户模型，而比特币是 UTXO 模型） 通过链上编码定义参与者之间的承诺，这部分被称为“智能合约” ； 通过某种算法在多节点之间达成状态一致，这个过程被称为“共识” 。</p>
</blockquote>
<h2 id="区块链有哪些特点？"><a href="#区块链有哪些特点？" class="headerlink" title="区块链有哪些特点？"></a>区块链有哪些特点？</h2><p>从技术构成的角度来观察区块链有助于我们揭开它的神秘面纱， 实事求是地分析区块链， 并揭示它的本质特点，理解其价值发挥的内在逻辑。 如前所述， 区块链并不是一个全新的技术， 而是结合了多种现有技术进行的组合式创新，是一种新形式的分布式加密存储系统。<br>区块链本质上是一种健壮和安全的分布式状态机，典型的技术构成包括共识算法、 P2P通讯、密码学、 数据库技术和虚拟机。这也构成了区块链必不可少的 5 项核心能力：</p>
<blockquote>
<p>存储数据：源自数据库技术和硬件存储计算能力的发展，随着时间的累积，区块链的大小也在持续上升，成熟的硬件存储计算能力，<br>使得多主体间同时大量存储相同数据成为可能；</p>
</blockquote>
<blockquote>
<p>共有数据：源自共识算法，参与区块链的各个主体通过约定的决策机制自动达成共识， 共享同一份可信的数据账本；</p>
</blockquote>
<blockquote>
<p>分布式：源自 P2P 通讯技术，实现各主体间点对点的信息传输；</p>
</blockquote>
<blockquote>
<p>防篡改与保护隐私：源自密码学运用， 通过公钥私钥、 哈希算法等密码学工具，确保各主体身份和共有信息的安全；</p>
</blockquote>
<blockquote>
<p>数字化合约：源自虚拟机技术，将生成的跨主体的数字化智能合约写入区块链系统，通过预设的触发条件， 驱动数字合约的执行。</p>
</blockquote>
<p>3、区块链适合解决哪些问题？<br>通过对比分析、 研究国内外各领域的典型应用案例及相关参考文献，获得了一些有助于在业务中推广及应用区块链的经验， 并推荐具有以下特点的应用场景或问题，应该积极考虑尝试区块链技术：</p>
<p>业务开展需要进行跨主体协作</p>
<p>当需要为开展跨主体的业务建设 IT 系统时， 传统的解决方案通常是两种思路。要么建立和运营一个中心化的系统来处理各个参与方的业务需求，业务数据由中心化的组织维护；要么采用 SOA 架构， 由各个参与方发布服务接口，并相互调用，数据仍然维护在各个参与方。如果采用中心化的方案，若是业务的参与方之间是相对独立平等的，要开发建设一个中心化系统是很困难的， 包括协调、 立项、 成本分摊等问题。 如果采用 SOA 的方案， 则技术实践上比较复杂， 技术方案缺少通用性， 难以支持复杂的业务。 此外，从数据的角度来看，无论是中心化的方案还是 SOA， 都难以实现数据防篡改。<br>在业务参与方之间相对独立平等的跨主体业务协作的场景下， 利用区块链的共有数据、防篡改、 分布式和数字化合约的特点， 能够把一些以往需要在业务层面协调解决的问题， 放到技术层面来解决， 使得问题的解决过程更高效、灵活以及更具客观性。</p>
<p>业务开展需要参与方之间建立低成本信任</p>
<p>大多数业务开展都需要建立一定的信任基础，尤其是跨主体的场景下。 对信任建立困难、信任维护成本高的应用场景， 区块链可以提供非常有效帮助。</p>
<h2 id="我们从三个方面来考察区块链如何建立低成本信任："><a href="#我们从三个方面来考察区块链如何建立低成本信任：" class="headerlink" title="我们从三个方面来考察区块链如何建立低成本信任："></a>我们从三个方面来考察区块链如何建立低成本信任：</h2><h2 id="1-数据可信"><a href="#1-数据可信" class="headerlink" title="1. 数据可信"></a>1. 数据可信</h2><blockquote>
<p>传统的解决方案中，数据通常是以中心化的方式存储，本应共有的业务数据却被强势的参与方持有。<br>这种模式下，数据的可信度是由数据持有者的商业/社会信用来保证的， 只能建立主观的可信，对于一些重要的领域，<br>仍需要付出额外的成本来规避数据被恶意篡改的风险。</p>
</blockquote>
<blockquote>
<p>区块链的解决方案是结合了密码学哈希和数字签名，以区块链条的形式将数据的变更历史按时间先后链在一起，<br>并通过共识协议使得参与的各方都共同拥有这些数据。</p>
</blockquote>
<blockquote>
<p>由于多方分别持有相同的数据副本， 并且数据被签名确认， 并记录数据的“指纹”（哈希值）， 以密码技术保证了数据无法被篡改，<br>数据因此变得可信。</p>
</blockquote>
<blockquote>
<p>区块链使数据持有变得去中心化，以技术手段实现数据客观“可信”。</p>
</blockquote>
<h2 id="2-合约履行"><a href="#2-合约履行" class="headerlink" title="2.合约履行"></a>2.合约履行</h2><blockquote>
<p>通常的合约（或者契约、 协定、合同） 的履行从根本上是由法律来保障的。合约被自觉履行一般都是因为有利益、 道德或法律后果，<br>受许多主观因素影响。 商业活动中为了防止违约、或对违约进行追索， 需要付出高昂的成本（担保、保险、律师费、漫长司法程序等等）。</p>
</blockquote>
<blockquote>
<p>区块链智能合约的本质是一套数字化形式的契约，由计算机确保严格执行。执行方式上，<br>通常的合约是事后以人的主观意愿来执行；而智能合约是在触发条件被满足后，由计算机程序来保证合约及时地执行，具有客观性。</p>
</blockquote>
<blockquote>
<p>我们把资产数字化到区块链或与区块链锚定，<br>采用智能合约来描述对资产关系的承诺，同时智能合约的执行过程和结果被区块链严格记录，这样便可以降低履约成本和确保高效履约。</p>
</blockquote>
<blockquote>
<p>区块链智能合约带来的是“契约” 的一种新的更精确的表示形式， 以及一种更客观、<br>更严格的执行方式。由于契约是我们社会活动的基础，因此这种变化将会带来更广泛的社会影响。</p>
</blockquote>
<h2 id="3-历史可证明"><a href="#3-历史可证明" class="headerlink" title="3.历史可证明"></a>3.历史可证明</h2><blockquote>
<p>区块链固化了交易历史，并提供对交易历史的追溯查询，保证交易的不可篡改和不可抵赖。</p>
</blockquote>
<blockquote>
<p>如果某个事件发生时，这个事件连同时间戳一起被记录到区块链中，将来就可以通过区块链证明这件事确实在这个时间发生过。因此区块链为参与交易的各方保留了可信的历史记录。</p>
</blockquote>
<blockquote>
<p>业务过程存在长交易、 长周期链条</p>
</blockquote>
<blockquote>
<p>业务在多主体间流转时， 难以确定间接主体的真实性和有效性，同时由于多主体间的业务隔离， 难以延伸出多级业务。区块链从技术上保证整个长交易、<br>长周期链条的各参与主体身份真实，数据可信， 实现信用的多级传递， 促进业务链条扁平化，提升业务效率。</p>
</blockquote>
<blockquote>
<p>比特币作为区块链技术的一种典型应用， 在交易市场上市值已达千亿美元，这样的一个高市值系统却是以开源的方式在公共网络上运行了多年，<br>表现出了良好的安全性和健壮性。比特币系统的表现揭示了一个重要事实——以客观区块链技术为手段可以直接建立信任， 而不需中介背书。</p>
</blockquote>
<blockquote>
<p>如果我们把区块链技术推广运用到更广泛的产业、金融、 公共服务等场景， 将使社会的生产分工方式产生巨大变化，这些变化包括:</p>
</blockquote>
<ul>
<li>商业交易过程更容易达成信任， 从而降低风险， 使交易更具确定性；</li>
<li>商业交易中间环节被缩减， 多方交易可直接达成；</li>
<li>传统中介的中心化的服务模式将发生巨变。</li>
</ul>
<blockquote>
<p>这种影响目前已经逐渐显现， 随着区块链的逐渐成熟和应用的不断丰富，这种影响力将会像蝴蝶效应一般逐步放大和深入到整个社会，<br>推动去中心化或多中心化主体间的高效协同和共识决策。 人类因掌握“工具” 而发展文明，我们相信区块链是一种新的“工具”<br>，最终将促进人类社会的进步发展。</p>
</blockquote>
<h2 id="区块链发展面临的挑战"><a href="#区块链发展面临的挑战" class="headerlink" title="区块链发展面临的挑战"></a>区块链发展面临的挑战</h2><blockquote>
<p>目前人们已经广泛认识到区块链巨大的应用价值，但是区块链的技术发展却还没有到达成熟阶段， 尤其在企业级应用方面， 区块链的交易并发能力、<br>数据存储能力、通用性、 功能完备性、 易用性都还存在明显不足。</p>
</blockquote>
<h2 id="1-交易并发能力"><a href="#1-交易并发能力" class="headerlink" title="1.交易并发能力"></a>1.交易并发能力</h2><blockquote>
<p>目前开源的区块链系统的高并发交易能力普遍不高， 其中，共识算法是制约性能的重要方面。在区块链中使用的典型共识算法主要有： PoW、 PoS、<br>DPoS、 PBFT 等。 制约性能的另一个重要因素是账本结构。 目前典型的区块链账本设计为区块的单链结构，<br>意味着从全局来看所有的交易都只能顺序地被处理。 由于交易处理缺少并行度，因而难以获得接近于传统中心化系统的性能表现。<br>企业场景下的交易并发量通常要求在每秒处理数百至数千笔以上的交易，<br>远高于目前包括公有链、联盟链在内的典型区块链的表现，而且还要求区块链的性能表现可以随着业务规模的增长而动态伸缩。 因此，<br>现实和目标之间存在数量级的差别， 需要持续优化和提升区块链系统高并发交易性能。</p>
</blockquote>
<h2 id="2-数据存储能力"><a href="#2-数据存储能力" class="headerlink" title="2.数据存储能力"></a>2.数据存储能力</h2><blockquote>
<p>在数据存储能力方面，由于区块链的数据只有追加而没有移除，数据只增不减， 随着时间推移，<br>区块链系统对数据存储大小的需要也只能持续地增大，在处理企业数据时这一趋势增长更甚。 不同于公链数字货币的主要内容是“账户余额” ，<br>企业场景下的数据包含结构化和非结构化数据，数据量十分庞大。以电商供应链为例， 主要电商入口的每日数据记录条数通常都在千万级以上，<br>如再沿着供应链条进一步展开时，每延伸一级数据量都会进一步放大。<br>目前典型的区块链系统在实现对账本数据的存储时，典型的实现方式是基于文件系统或者简单的 KV 数据库存储，<br>没有采用分布式存储的设计，因而数据存储能力与实际需要之间也存在较大的差距， 需要探索更为有效的大数据存储方式。</p>
</blockquote>
<h2 id="3-通用性"><a href="#3-通用性" class="headerlink" title="3.通用性"></a>3.通用性</h2><blockquote>
<p>区块链需要适应多样化的业务需求，满足跨企业的业务链条上的数据共享，这意味着区块链对数据的记录方式要有足够的通用和标准，才能表示各种结构化和非结构化的信息，并能够满足随着业务范围拓展所需的跨链要求。<br>目前市面上的区块链系统大多采用特定的共识算法、 加密算法、 账户模型、 账本模型、存储类型，缺少可插拔能力， 无法适应不同场景要求。</p>
</blockquote>
<h2 id="4-功能完备性"><a href="#4-功能完备性" class="headerlink" title="4.功能完备性"></a>4.功能完备性</h2><blockquote>
<p>纵观现有区块链平台， 模型抽象单一， 难以适应业务系统快速开发的要求。 另外， 缺少对企业应用中常见的一些功能的支持，例如用户认证、<br>多级授权等。 再者，涉及到企业业务协作时， 跨企业的事件通知机制显得尤为重要，但少有区块链平台支持。</p>
</blockquote>
<h2 id="5-易用性"><a href="#5-易用性" class="headerlink" title="5.易用性"></a>5.易用性</h2><blockquote>
<p>区块链是由多种技术构成的，导致学习成本高、 实施难度大、人才稀缺。如何让用户快速理解区块链，低成本学习区块链，并将区块链技术快速应用到自身的业务中去，目前来看有很大的挑战。区块链技术需要降低学习和使用门槛，支持快速实施部署，提供贴近业务的接口，推广使用。</p>
</blockquote>
<blockquote>
<p>从比特币的提出到今天为止， 人们尝试了非常多样化的应用场景。 最初是币（coin）的应用，各种数字货币的出现和热炒引起了广泛关注和讨论。人们发现，作为比特币底层技术的区块链可以用来解决现有业务的一些痛点， 创新业务模式，于是金融和产业领域开始形成一些组织联盟， 如 R3、 Hyperledger 等。 技术圈也逐渐将更多的关注从“币” 转到了区块链的企业级应用。</p>
</blockquote>
<blockquote>
<p>人们在许多领域进行了广泛的尝试， 例如供应链管理， 互联网金融，证券和银行业务，贸易融资，保险，医疗健康， 资产管理，数字版权保护，公益慈善，政府公共服务， 监管合规性与审计，游戏，公益等等。但是，目前已经成功落地的区块链应用比较少，无论是技术还是业务都还处在摸索阶段。</p>
</blockquote>

            <hr>
          </div>
          <br>
          <div>
            <p>
            
            
              <span>
                <i class="iconfont icon-tag"></i>
                
                  <a class="hover-with-bg" href="/tags/%E5%8C%BA%E5%9D%97%E9%93%BE">区块链</a>
                
                  <a class="hover-with-bg" href="/tags/%E6%AF%94%E7%89%B9%E5%B8%81">比特币</a>
                
                  <a class="hover-with-bg" href="/tags/%E5%88%86%E5%B8%83%E5%BC%8F">分布式</a>
                
              </span>
            
            </p>
            
              <p class="note note-warning">本博客所有文章除特别声明外，均采用 <a href="https://zh.wikipedia.org/wiki/Wikipedia:CC_BY-SA_3.0%E5%8D%8F%E8%AE%AE%E6%96%87%E6%9C%AC" target="_blank" rel="nofollow noopener noopener">CC BY-SA 3.0协议</a> 。转载请注明出处！</p>
            
          </div>
        </div>
      </div>
    </div>
    <div class="d-none d-lg-block col-lg-2 toc-container">
      
  <div id="toc">
    <p class="h4"><i class="far fa-list-alt"></i>&nbsp;TOC</p>
    <div id="tocbot"></div>
  </div>

    </div>
  </div>
</div>

<!-- custom -->


<!-- Comments -->
<div class="col-lg-7 mx-auto nopadding-md">
  <div class="container comments mx-auto" id="comments">
    
      <br><br>
      
      
   <!-- 来必力City版安装代码 -->
<div id="lv-container" data-id="city" data-uid="MTAyMC80Nzg4My8yNDM4MA==">
	<script type="text/javascript">
   (function(d, s) {
       var j, e = d.getElementsByTagName(s)[0];

       if (typeof LivereTower === 'function') { return; }

       j = d.createElement(s);
       j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
       j.async = true;

       e.parentNode.insertBefore(j, e);
   })(document, 'script');
	</script>
<noscript> 为正常使用来必力评论功能请激活JavaScript</noscript>
</div>
<!-- City版安装代码已完成 -->
  
  
    
  </div>
</div>

    
  </main>

  
    <a class="z-depth-1" id="scroll-top-button" href="#" role="button">
      <i class="fa fa-chevron-up scroll-top-arrow" aria-hidden="true"></i>
    </a>
  

  
    <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">Search</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">keyword</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
  

  <footer class="mt-5">
  <div class="text-center py-3">
    <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><b>Hexo</b></a>
    <i class="iconfont icon-love"></i>
    <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener"> <b>Fluid</b></a>
    <br>

    
  
    <!-- 不蒜子统计PV -->
    
    &nbsp;<span id="busuanzi_container_site_pv">总访问量 
          <span id="busuanzi_value_site_pv"></span> 次</span>&nbsp;
  
  
    <!-- 不蒜子统计UV -->
    
    &nbsp;<span id="busuanzi_container_site_uv">总访客数 
            <span id="busuanzi_value_site_uv"></span> 人</span>&nbsp;
  
  <br>



    
  <!-- 备案信息 -->
  <a href="http://beian.miit.gov.cn/" target="_blank"
     rel="nofollow noopener">浙ICP备19040843号</a>
  


  </div>
</footer>

<!-- SCRIPTS -->
<script src="/lib/jquery/jquery.min.js" ></script>
<script src="/lib/popper/popper.min.js" ></script>
<script src="/lib/bootstrap/js/bootstrap.min.js" ></script>
<script src="/lib/mdbootstrap/js/mdb.min.js" ></script>
<script src="/js/main.js" ></script>


  <script src="/js/lazyload.js" ></script>



  
    <script src="/lib/tocbot/tocbot.min.js" ></script>
  
  <script src="/js/post.js" ></script>



  <script src="/lib/smooth-scroll/smooth-scroll.min.js" ></script>



  <script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" ></script>


<!-- Plugins -->


  

  

  

  

  




  <script src="/lib/prettify/prettify.min.js" ></script>
  <script>
    $(document).ready(function () {
      $('pre').addClass('prettyprint  linenums');
      prettyPrint();
    })
  </script>



  <script src="/lib/typed/typed.min.js" ></script>
  <script>
    var typed = new Typed('#subtitle', {
      strings: [
        '  ',
        "什么是区块链？&nbsp;",
      ],
      cursorChar: "_",
      typeSpeed: 50,
      loop: false,
    });
    typed.stop();
    $(document).ready(function () {
      $(".typed-cursor").addClass("h2");
      typed.start();
    });
  </script>



  <script src="/lib/anchor/anchor.min.js" ></script>
  <script>
    anchors.options = {
      placement: "right",
      visible: "false",
      
    };
    var el = "h1,h2,h3,h4,h5,h6".split(",");
    var res = [];
    for (item of el) {
      res.push(".markdown-body > " + item)
    }
    anchors.add(res.join(", "))
  </script>



  <script src="/js/local-search.js" ></script>
  <script>
    var path = "/local-search.xml";
    var inputArea = document.querySelector("#local-search-input");
    inputArea.onclick = function () {
      getSearchFile(path);
      this.onclick = null
    }
  </script>



  <script src="/lib/fancybox/jquery.fancybox.min.js" ></script>
  <script>
    $("#post img:not(.no-zoom img, img[no-zoom])").each(
      function () {
        var element = document.createElement("a");
        $(element).attr("data-fancybox", "images");
        $(element).attr("href", $(this).attr("src"));
        $(this).wrap(element);
      }
    );
  </script>





  





</body>
</html>
